x86emul: support MOVDIR{I,64B} insns
authorJan Beulich <jbeulich@suse.com>
Fri, 29 May 2020 15:32:14 +0000 (17:32 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 29 May 2020 15:32:14 +0000 (17:32 +0200)
commita9ecb9e780e2373c53b469f81ea54db19b9378dd
treed9a334c7b1422e9300650b94a7425c31f43575a8
parentfced27b002c73c47c6c24ece2fe32b78157ad6b6
x86emul: support MOVDIR{I,64B} insns

Introduce a new blk() hook, paralleling the rmw() one in a certain way,
but being intended for larger data sizes, and hence its HVM intermediate
handling function doesn't fall back to splitting the operation if the
requested virtual address can't be mapped.

Note that SDM revision 071 doesn't specify exception behavior for
ModRM.mod == 0b11; assuming #UD here.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: Andrew Cooper <andrew.cooper@citrix.com>
tools/tests/x86_emulator/predicates.c
tools/tests/x86_emulator/test_x86_emulator.c
tools/tests/x86_emulator/x86-emulate.h
xen/arch/x86/arch.mk
xen/arch/x86/hvm/emulate.c
xen/arch/x86/x86_emulate/x86_emulate.c
xen/arch/x86/x86_emulate/x86_emulate.h
xen/include/asm-x86/cpufeature.h
xen/include/public/arch-x86/cpufeatureset.h